package global

import (
	"gitee.com/swsk33/sclog"
	"github.com/spf13/viper"
	"os"
)

// Config 用于全局配置的结构体对象
type Config struct {
	// 认证部分配置
	Auth struct {
		// 用户名
		Username string `mapstructure:"username"`
		// M2M API Token
		Token string `mapstructure:"token"`
	} `mapstructure:"auth"`
	// 下载部分配置
	Download struct {
		// 下载的任务列表label名称列表
		Labels []string `mapstructure:"labels"`
		// 单个文件的下载并发数
		Concurrent int `mapstructure:"concurrent"`
		// 同时下载的文件数
		ParallelCount int `mapstructure:"parallel-count"`
		// 保存的文件夹路径（不存在会创建）
		Folder string `mapstructure:"folder"`
	} `mapstructure:"download"`
}

// TotalConfig 全局配置
var TotalConfig Config

func init() {
	// 获取自身路径
	selfPath, e := os.Executable()
	if e != nil {
		sclog.ErrorLine("获取自身路径出现错误！")
		sclog.ErrorLine(e.Error())
		os.Exit(1)
	}
	// 初始化Viper
	viper.SetConfigName("config")
	viper.SetConfigType("yaml")
	viper.AddConfigPath(".")
	viper.AddConfigPath(selfPath)
	e = viper.ReadInConfig()
	if e != nil {
		sclog.ErrorLine("读取配置文件出错！")
		sclog.Error(e.Error())
		os.Exit(1)
	}
	// 反序列化配置
	e = viper.Unmarshal(&TotalConfig)
	if e != nil {
		sclog.ErrorLine("反序列化配置失败！")
		sclog.ErrorLine(e.Error())
		os.Exit(1)
	}
}